<?php

use Illuminate\Database\Seeder;

/**
 * 基础数据填充器
 *
 * Date: 21/03/2018
 * @author George
 */
class DatabaseSeeder extends Seeder
{
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		/**
		 * 系统基础数据填充器
		 */
		$this->call(ModulesTableSeeder::class);
		$this->call(MenusTableSeeder::class);
		$this->call(PositionsTableSeeder::class);
		$this->call(PermissionsTableSeeder::class);

		/**
		 * 用于测试环境的数据生成器
		 */
		if (app()->environment() !== 'production') {
			/**
			 * 业务基础数据填充器
			 */
			// 用户表填充器
			$this->call(UsersTableSeeder::class);
			// 平台管理员表填充器
			$this->call(AdminsTableSeeder::class);
			// 公司数据表填充器
			$this->call(CompaniesTableSeeder::class);
			// 项目数据表填充器
			$this->call(ProjectsTableSeeder::class);
			// 部门数据表填充器
			$this->call(DepartmentsTableSeeder::class);
			// 系统设置数据表填充器
			$this->call(SettingsTableSeeder::class);
			// 公司模块中间表数据填充器
			$this->call(CompanyModulePivotTableSeeder::class);
			// 岗位和权限中间表数据填充器
			$this->call(PositionPermissionPivotTableSeeder::class);

			/**
			 * 考勤模拟数据
			 */
			// 项目班次数据表填充器
			$this->call(GenresTableSeeder::class);
			// 项目用人需求数据填充器
			$this->call(DemandsTableSeeder::class);
			// 项目排班数据表填充器
			$this->call(SchedulesTableSeeder::class);
			// 考勤数据表填充器
			$this->call(AttendancesTableSeeder::class);

			/**
			 * 巡检模拟数据
			 */
			// 线路数据表填充器
			$this->call(LinesTableSeeder::class);
			// 圈数据表填充器
			$this->call(CirclesTableSeeder::class);
			// 节点数据表填充器
			$this->call(NodesTableSeeder::class);

			/**
			 * 报岗模拟数据
			 */
			// 项目岗点数据填充器
			$this->call(StationsTableSeeder::class);
			// 岗点报岗设置数据填充器
			$this->call(StationSettingTableSeeder::class);
			// 报岗记录数据填充器
			$this->call(StationReportsTableSeeder::class);
		}
	}
}
